package com.fancy.recommendation.service;

import com.fancy.recommendation.dto.request.UserBehaviorRequestDTO;
import com.fancy.recommendation.entity.UserBehavior;
import com.fancy.recommendation.entity.UserPreference;

import java.util.List;
import java.util.Map;

/**
 * 用户行为分析服务接口
 *
 * @author fancy
 */
public interface UserBehaviorService {

    /**
     * 记录用户行为
     */
    void recordBehavior(UserBehaviorRequestDTO request);

    /**
     * 批量记录用户行为
     */
    void batchRecordBehaviors(List<UserBehaviorRequestDTO> requests);

    /**
     * 获取用户行为统计
     */
    Map<String, Object> getUserBehaviorStats(Long userId);

    /**
     * 获取用户最近行为
     */
    List<UserBehavior> getRecentBehaviors(Long userId, Integer limit);

    /**
     * 分析用户偏好
     */
    void analyzeUserPreferences(Long userId);

    /**
     * 获取用户偏好
     */
    List<UserPreference> getUserPreferences(Long userId);

    /**
     * 获取热门内容
     */
    List<Map<String, Object>> getHotContent(String actionType, Integer days, Integer limit);

    /**
     * 计算用户相似度
     */
    Double calculateUserSimilarity(Long userId1, Long userId2);

    /**
     * 获取相似用户
     */
    List<Map<String, Object>> getSimilarUsers(Long userId, Integer limit);

    /**
     * 清理过期行为数据
     */
    void cleanExpiredBehaviors(Integer days);
}
